import logging
import os
from .util import mkdir


def init_logger(save_dir, exp_name):
    """
    初始化日志
    :param save_dir: 日志保存路径，默认为results文件夹
    :param exp_name: 实验名称，例如experiment_name_2023-08-06-00-13-35
    :return: None
    :author: qms
    """
    logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)-8s %(message)s')  # 输出最低的日志级别，日志格式
    logFormatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')  # 日志格式
    rootLogger = logging.getLogger()  # 获取根logger

    dir = os.path.join(save_dir, exp_name)  # 日志保存路径
    if not os.path.exists(dir):
        mkdir(dir)  # 创建日志保存路径
    assert os.path.exists(dir), 'dir {} does not exist'.format(dir)
    
    file_handler = logging.FileHandler(os.path.join(dir, 'console.log'), 'w+')  # 创建日志文件
    file_handler.setFormatter(logFormatter)  # 设置日志格式
    rootLogger.addHandler(file_handler)  # 添加日志文件到根logger